//给定一个二叉树的 根节点 root，请找出该二叉树的 最底层 最左边 节点的值。 
//
// 假设二叉树中至少有一个节点。 
//
// 
//
// 示例 1： 
//
// 
//
// 
//输入: root = [2,1,3]
//输出: 1
// 
//
// 示例 2： 
//
// 
//
// 
//输入: [1,2,3,4,null,5,6,null,null,7]
//输出: 7
// 
//
// 
//
// 提示： 
//
// 
// 二叉树的节点个数的范围是 [1,10⁴] 
// 
// -2³¹ <= Node.val <= 2³¹ - 1 
// 
//
// 
//
// 
// 注意：本题与主站 513 题相同： https://leetcode-cn.com/problems/find-bottom-left-tree-
//value/ 
//
// Related Topics 树 深度优先搜索 广度优先搜索 二叉树 👍 54 👎 0


package LeetCode.editor.cn;

import java.util.ArrayDeque;
import java.util.Deque;

/**
 * @author ldltd
 * @date 2025-02-14 00:17:23
 * @description LCR 045.找树左下角的值
 */
public class LwUNpT{
	 public static void main(String[] args) {
	 	 //测试代码
	 	 LwUNpT fun=new LwUNpT();
	 	 Solution solution = fun.new Solution();

	 }
	 
//力扣代码
//leetcode submit region begin(Prohibit modification and deletion)
public class TreeNode {
	int val;
	TreeNode left;
	TreeNode right;
	TreeNode() {}
	TreeNode(int val) { this.val = val; }
	TreeNode(int val, TreeNode left, TreeNode right) {
		this.val = val;
		this.left = left;
		this.right = right;
	}
}
class Solution {
    public int findBottomLeftValue(TreeNode root) {
		Deque<TreeNode> q=new ArrayDeque<>();
		q.offer(root);
		int res=0;
		while (!q.isEmpty()){
			int size=q.size();
			 res=q.peek().val;
			while (size!=0){
				TreeNode poll = q.poll();
				if(poll.left!=null)q.offer(poll.left);
				if(poll.right!=null)q.offer(poll.right);
				size--;
			}
		}
		return res;
    }
}
//leetcode submit region end(Prohibit modification and deletion)

}
